问题365网经验知识百科全书!

pyqt5转pyqt6需要注意的事项

0次浏览 | 2023-09-01
来源 :daniel

@[TOC]pyqt6

pyqt5转pyqt6需要注意的事项 一、枚举类型

Pyqt5的枚举类型是用python的enum.IntEnum实现的,Pyqt6的枚举类型是是用python的enum.Enum实现的。
在Pyqt5使用枚举为:类名.枚举值
在Pyqt6使用枚举为:类名.枚举名.枚举值。
枚举名是什么需要查qt文档,或者在IDE(vs code、pycharm、sublime等)查看document说明。
常用文档:pyqt6所有类
常用文档:Qt命名空间
以下是几个样例:

# from PyQt5.QtCore import Qtfrom PyQt6.QtCore import Qt# Qt.AlignCenter# 在https://doc.qt.io/qt-6/qt.html查到# enum:AlignmentFlag { AlignLeft, AlignRight, AlignHCenter, AlignJustify, AlignTop, …, AlignVertical_Mask }Qt.AlignmentFlag.AlignCenter# Qt.RightButtonQt.MouseButton.RightButtonQt.MouseButton.LeftButton# QEvent.MouseButtonPressQEvent.Type.MouseButtonPress#QtWidgets.QMessageBox.YesQtWidgets.QMessageBox.StandardButton.Yes# 其他枚举类型新写法:Qt.MatchFlag.MatchExactlyQt.ItemDataRole.UserRoleQt.CheckState.CheckedQt.ItemFlag.NoItemFlagsQt.ContextMenuPolicy.CustomContextMenuQt.GlobalColor.redQtGui.QFont.Weight.BoldQtWidgets.QDialogButtonBox.ButtonRole.AcceptRoleQtWidgets.QLineEdit.EchoMode.PasswordQAbstractItemView.EditTrigger.DoubleClickedQAbstractItemView.EditTrigger.NoEditTriggersQAbstractItemView.SelectionBehavior.SelectRows

二、取消QtWidgets.QDesktopWidget()

# 屏幕坐标、宽高#rect = QtWidgets.QDesktopWidget().screenGeometry()rect = QtGui.QGuiApplication.primaryScreen().availableGeometry()

三、取消QtWidgets.qApp

# QtWidgets.qApp.quit()QApplication.quit()QApplication.exit()

四、改变QAction所属模块

# QtWidgets.QActionQtGui.QAction

五、删除.exec_() 、.print_()方法

改用.exec()

六、删除Qt模块

# from PyQt5 import Qtfrom PyQt6.QtCore import Qt

七、注意python、PyQt6、PyQt6-Qt6之间版本的一致性

(在外网环境通过pip install PyQt6安装的应该没有此问题,可跳过)
我的开发环境是Windows7(内网)、Windows10(外网)上的python3.8.10《python-3.8.10-amd64.exe》。我有离线安装的需求,之前下载PyQt6的whl文件的时候,没注意查看py版本,安装了下面的三个库

PyQt6-6.2.2-cp36-abi3-win_amd64.whl
PyQt6_Qt6-6.2.2-py3-none-win_amd64.whl
PyQt6_sip-13.2.0-cp38-cp38-win_amd64.whl

同样的代码,在Windows10(外网)上导入PyQt6正常运行,在Windows7(内网)上导入PyQt6的任意一个模块,都报错:importError: DLL load failed while importing QtCore: 找不到指定的程序。

Traceback (most recent call last): File "D:devworkspacetest.py", line 7, in from PyQt6 import QtCoreimportError: DLL load failed while importing QtCore: 找不到指定的程序。

网上找了很多资料,有说vscode+Anaconda安装python和Pyqt出问题的,有说要安装Visual C++2015-2019以上版本的,试了都没用。后面想着重新安装PyQt6试试,才发现我安装的PyQt6的《PyQt6-6.2.2-cp36-abi3-win_amd64.whl》写明cp36,是对应Python3.6的。然后马上重新下载了低版本的PyQt6.1.1,以下三个库重新安装了,就正常了。

PyQt6-6.1.1-cp36.cp37.cp38.cp39-none-win_amd64.whl
PyQt6_Qt6-6.1.1-py3-none-win_amd64.whl
PyQt6_sip-13.2.0-cp38-cp38-win_amd64.whl

不过奇怪的是,在Windows10上用Python3.8.10安装《PyQt6-6.2.2-cp36-abi3-win_amd64.whl》竟然能正常使用…
参阅:pyqt5与pyqt6的不同点

python语言属于什么语言?Python特点主要有哪些?
目前,Python已经成为求职中最吃香的三大编程语言之一,而且相较于C、C++、Java等语言而言,Python拥有非常独特的优势,通过极少的代码量就可以实现相同的功能,可以有效提升开发者的
python小程序制作快捷键,随时打包带走任意环境运行
最近写了个小程序练手。感觉要想把这个小程序随时随地带走似乎不是那么方便,最好能够生产快捷方式,在任何电脑都能运行,不管有没有配置环境。 很简单。 python代码做
pyqt5转pyqt6需要注意的事项
@[TOC]pyqt6 pyqt5转pyqt6需要注意的事项 一、枚举类型 Pyqt5的枚举类型是用python的enum.IntEnum实现的,Pyqt6的枚举类型是是用python的enum.Enum实现的。 在Pyqt5使
python虚拟环境打包exe
一、安装虚拟环境 进入cmd环境, C:Userscjy>pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 二、创建虚拟环境 virtualenv
369问题网
免责声明:问题365网所有文字、图片、视频、音频等资料均来自互联网,不代表本站赞同其观点,内容仅代表作者本人意见,若因此产生任何纠纷作者本人负责,本站亦不为其版权负责! 如有问题,请联系我们
CopyRight©1999-2022 www.wt369.net/ All Right Reserved